Steepからdbt Semantic Layerで定義されたMetricsを参照してみた
さがらです。
Metricsの定義が前提のBIツール「Steep」について、先日ブログを書いてみました。
このSteepですがdbt Semantic Layerとも連携が可能のため、この連携機能を試してSteepからdbt Semantic Layerで定義されたMetricsを参照してみました。
やること
先日私がdbt Semantic Layerを試した際の、以下リポジトリで定義されているMetricsをSteepから参照してみます。
dbt Cloudでの事前準備
リポジトリの準備
jaffle-sl-templateのリポジトリをforkし、dbt projectをdbt Cloud上で定義し、Production Environmentを定義して、dbt seedとdbt buildを含むジョブを実行しておきます。
リポジトリの内容の説明に関しては、下記のブログも参考になるはずです。
dbt CloudでのSemantic Layerの設定
まずdbt Cloud上の対象のdbt projectにおいて、Semantic Layerを有効化しておく必要があります。
Account settings
のProjects
から対象のdbt projectを選択し、Configure Semantic Layer
を押します。
続いて、このdbt projectで使用しているDWHへの認証情報を入力します。
最低でも、semantic_models
とmetrics
が参照しているdbt Modelを含むスキーマ・テーブルへの読み取り権限が必要となります。
必要な情報を入力したら、右下のSave
を押します。
すると、Environment ID
やHost
などの情報が表示されます。
この上でSteepから接続するにはService Token
が必要となりますので、Generate Service Token
を押します。
任意のToken Name
を入れて、デフォルトのSemantic Layer Only
とMetadata Only
が付与された状態で、右下のSave
を押します。
すると、Service Tokenが表示されます!この画面を離れると表示できなくなるので、忘れずにコピーしておきましょう。
Steepでの設定
左のメニューのData sources
から、dbt Cloud
を押します。
先程dbt Cloud上で確認した情報も用いて、Host
、Environment ID
、Service account token
を入力し、Continue
を押します。
すると、dbt Cloudに対して定義されたMetricsを取得する連携処理が走ります。問題なく完了すれば、下図のように表示されます。
Steepからdbt Semantic Layerで定義したMetricsを参照してみる
連携が上手くいけば、SteepのMetrics catalog
にdbt Semantic Layerで定義したMetricsが一覧で表示されます。
※CategoryとOwnerですが、dbt上で定義したMetricsに付随するメタデータを元に連携する機能連携は近日中に行われると公式Docの「Owners and categories」に記載がありました。
この中からMetricsを1つ開くと、下図のようにグラフを描写することが出来ました。(サンプルデータの日時が2016年9月から2017年3月のデータしかないため、少し横軸が無駄なグラフになってしまっていますが、Steepの仕様上避けられなそうです。SteepのTime grainの絞り込みのUIはとてもわかりやすくて便利なのですが、ユーザー側で見たいTime grainの設定が自由にできるとなお嬉しいですね!)
あとは、通常のSteepの操作感でReportsやDashboardsを作っていくことが出来ます!ReportsやDashboardsの操作については下記のブログも併せてご覧ください。
おまけ:Steepが発行するクエリについて
これはdbt Semantic Layerと紐づけた場合に限った場合の事象ではないのですが、Steepは各Metricsを開いた際に、使用できるDimensionsすべてに対してフィルターの候補値を得るために、以下のようなクエリが投げられていました。
※今回はSnowflakeを使用していたためコスト的な影響はなかったですが、裏側がBigQueryのオンデマンドだとひやひやしそうですね…
最後に
Steepからdbt Semantic Layerで定義されたMetricsを参照してみたので、その内容をまとめてみました。
連携自体は本当に簡単な操作で出来て簡単でしたね!あとは、CategoryとOwnerの定義もdbt上で定義してSteepにSyncできるようになると更に実用性が増すと思うので、今後のアップデートにも期待したい所です。